/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.mindbox.mueblesalpes.negocio.utilidades;

import com.mindbox.mueblesalpes.negocio.entity.TarjetaCredito;
import com.mindbox.mueblesalpes.negocio.persistence.UtilidadesPersistencia;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author jsanchez
 */
public abstract class UtilidadesTarjetaCredito {
/**
     * Consulta la tarjeta por el ID.
     * @param id
     * @return
     * @throws java.sql.SQLException
     */
    public static TarjetaCredito consultarTarjetaCreditoFromId(Connection conexion, Long id) throws SQLException {
        TarjetaCredito tc = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            String sql =
                    "SELECT id, idcliente, montotarjeta from tarjeta_credito " +
                    "WHERE id = ?";
            ps = conexion.prepareStatement(sql);
            ps.setLong(1, id.longValue());
            rs = ps.executeQuery();
            if(rs.next())
                return construirTarjetaCreditoFromRS(rs);
        } finally {
            UtilidadesPersistencia.cerrarResultSets(rs);
            UtilidadesPersistencia.cerrarPreparedStatements(ps);
        }
        return tc;
    }

/**
     * Consulta la tarjeta por el ID del cliente.
     * @param idCliente
     * @return TarjetaCredito
     * @throws java.sql.SQLException
     */
     public static TarjetaCredito consultarTarjetaCreditoFromIdCliente(Connection conexion, Long idCliente) throws SQLException {
        TarjetaCredito tc = null;

        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            String sql =
                    "SELECT id, idcliente, montotarjeta from tarjeta_credito " +
                    "WHERE idcliente = ?";
            ps = conexion.prepareStatement(sql);
            ps.setLong(1, idCliente.longValue());
            rs = ps.executeQuery();
            if(rs.next())
                return construirTarjetaCreditoFromRS(rs);
        } finally {
            UtilidadesPersistencia.cerrarResultSets(rs);
            UtilidadesPersistencia.cerrarPreparedStatements(ps);
        }
        return tc;
    }

    /**
     * Construye el objeto TarjetoCredito con un ResultSet
     * @param rs
     * @return
     * @throws java.sql.SQLException
     */
    public static TarjetaCredito construirTarjetaCreditoFromRS(ResultSet rs) throws SQLException {
        TarjetaCredito tc = new TarjetaCredito();
        tc.setId(rs.getLong("id"));
        tc.setIdCliente(rs.getLong("idcliente"));
        tc.setMontoTarjeta(rs.getDouble("montotarjeta"));
        return tc;
    }
}